package com.mock.model;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;

@Entity
public class Organisation implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private long organisationId;
	private String organisationName;
	private String organisationShortDescription;

	@ManyToOne
	@JoinColumn(name = "contactId")
	private Contact leadContact;

	private String addressLine1;
	private String addressLine2;
	private String addressLine3;
	private String postcode;
	private String city;
	private String county;
	
	@ManyToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "countryId")
	private Country country;

	private boolean preferredOrganisation;
	private boolean expressionOfInterest;

	@ManyToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "businessId")
	private BusinessType businessType;

	private String organisationFullDescription;
	private String phoneNumber;
	private String fax;
	private String email;
	private String webAddress;
	private String charityNumber;
	private String companyNumber;

	@ManyToMany(cascade = CascadeType.ALL)
	private List<OrganisationSpecialism> organisationSpecialism;
	@ManyToMany(cascade = CascadeType.ALL)
	private List<ServiceDisabilitiesCapability> serviceDisabilitiesCapability;
	@ManyToMany(cascade = CascadeType.ALL)
	private List<ServiceBarriersCapability> serviceBarriersCapability;
	@ManyToMany(cascade = CascadeType.ALL)
	private List<ServiceBenefitsCapability> serviceBenefitsCapability;
	@ManyToMany(cascade = CascadeType.ALL)
	private List<ServicePersonalCircumstancesCapability> servicePersonalCircumstancesCapability;
	@ManyToMany(cascade = CascadeType.ALL)
	private List<ServiceEthnicityCapability> serviceEthnicityCapability;
	@ManyToMany(cascade = CascadeType.ALL)
	private List<Accreditation> accreditation;
	private boolean active;

	@ManyToMany(cascade = CascadeType.ALL)
	private List<Programme> programmes;
	@ManyToMany(cascade = CascadeType.ALL)
	private List<Service> services;

	public Organisation() {
		super();
	}

	public Organisation(
			long organisationId,
			String organisationName,
			String organisationShortDescription,
			Contact leadContact,
			String addressLine1,
			String addressLine2,
			String addressLine3,
			String postcode,
			String city,
			String county,
			Country country,
			boolean preferredOrganisation,
			boolean expressionOfInterest,
			BusinessType businessType,
			String organisationFullDescription,
			String phoneNumber,
			String fax,
			String email,
			String webAddress,
			String charityNumber,
			String companyNumber,
			List<OrganisationSpecialism> organisationSpecialism,
			List<ServiceDisabilitiesCapability> serviceDisabilitiesCapability,
			List<ServiceBarriersCapability> serviceBarriersCapability,
			List<ServiceBenefitsCapability> serviceBenefitsCapability,
			List<ServicePersonalCircumstancesCapability> servicePersonalCircumstancesCapability,
			List<ServiceEthnicityCapability> serviceEthnicityCapability,
			List<Accreditation> accreditation, boolean active,
			List<Programme> programmes, List<Service> services) {
		super();
		this.organisationId = organisationId;
		this.organisationName = organisationName;
		this.organisationShortDescription = organisationShortDescription;
		this.leadContact = leadContact;
		this.addressLine1 = addressLine1;
		this.addressLine2 = addressLine2;
		this.addressLine3 = addressLine3;
		this.postcode = postcode;
		this.city = city;
		this.county = county;
		this.country = country;
		this.preferredOrganisation = preferredOrganisation;
		this.expressionOfInterest = expressionOfInterest;
		this.businessType = businessType;
		this.organisationFullDescription = organisationFullDescription;
		this.phoneNumber = phoneNumber;
		this.fax = fax;
		this.email = email;
		this.webAddress = webAddress;
		this.charityNumber = charityNumber;
		this.companyNumber = companyNumber;
		this.organisationSpecialism = organisationSpecialism;
		this.serviceDisabilitiesCapability = serviceDisabilitiesCapability;
		this.serviceBarriersCapability = serviceBarriersCapability;
		this.serviceBenefitsCapability = serviceBenefitsCapability;
		this.servicePersonalCircumstancesCapability = servicePersonalCircumstancesCapability;
		this.serviceEthnicityCapability = serviceEthnicityCapability;
		this.accreditation = accreditation;
		this.active = active;
		this.programmes = programmes;
		this.services = services;
	}

	public long getOrganisationId() {
		return organisationId;
	}

	public void setOrganisationId(long organisationId) {
		this.organisationId = organisationId;
	}

	public String getOrganisationName() {
		return organisationName;
	}

	public void setOrganisationName(String organisationName) {
		this.organisationName = organisationName;
	}

	public String getOrganisationShortDescription() {
		return organisationShortDescription;
	}

	public void setOrganisationShortDescription(
			String organisationShortDescription) {
		this.organisationShortDescription = organisationShortDescription;
	}

	public Contact getLeadContact() {
		return leadContact;
	}

	public void setLeadContact(Contact leadContact) {
		this.leadContact = leadContact;
	}

	public String getAddressLine1() {
		return addressLine1;
	}

	public void setAddressLine1(String addressLine1) {
		this.addressLine1 = addressLine1;
	}

	public String getAddressLine2() {
		return addressLine2;
	}

	public void setAddressLine2(String addressLine2) {
		this.addressLine2 = addressLine2;
	}

	public String getAddressLine3() {
		return addressLine3;
	}

	public void setAddressLine3(String addressLine3) {
		this.addressLine3 = addressLine3;
	}

	public String getPostcode() {
		return postcode;
	}

	public void setPostcode(String postcode) {
		this.postcode = postcode;
	}

	public String getCity() {
		return city;
	}

	public void setCity(String city) {
		this.city = city;
	}

	public String getCounty() {
		return county;
	}

	public void setCounty(String county) {
		this.county = county;
	}

	public Country getCountry() {
		return country;
	}

	public void setCountry(Country country) {
		this.country = country;
	}

	public boolean isPreferredOrganisation() {
		return preferredOrganisation;
	}

	public void setPreferredOrganisation(boolean preferredOrganisation) {
		this.preferredOrganisation = preferredOrganisation;
	}

	public boolean isExpressionOfInterest() {
		return expressionOfInterest;
	}

	public void setExpressionOfInterest(boolean expressionOfInterest) {
		this.expressionOfInterest = expressionOfInterest;
	}

	public BusinessType getBusinessType() {
		return businessType;
	}

	public void setBusinessType(BusinessType businessType) {
		this.businessType = businessType;
	}

	public String getOrganisationFullDescription() {
		return organisationFullDescription;
	}

	public void setOrganisationFullDescription(
			String organisationFullDescription) {
		this.organisationFullDescription = organisationFullDescription;
	}

	public String getPhoneNumber() {
		return phoneNumber;
	}

	public void setPhoneNumber(String phoneNumber) {
		this.phoneNumber = phoneNumber;
	}

	public String getFax() {
		return fax;
	}

	public void setFax(String fax) {
		this.fax = fax;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getWebAddress() {
		return webAddress;
	}

	public void setWebAddress(String webAddress) {
		this.webAddress = webAddress;
	}

	public String getCharityNumber() {
		return charityNumber;
	}

	public void setCharityNumber(String charityNumber) {
		this.charityNumber = charityNumber;
	}

	public String getCompanyNumber() {
		return companyNumber;
	}

	public void setCompanyNumber(String companyNumber) {
		this.companyNumber = companyNumber;
	}

	public List<OrganisationSpecialism> getOrganisationSpecialism() {
		return organisationSpecialism;
	}

	public void setOrganisationSpecialism(
			List<OrganisationSpecialism> organisationSpecialism) {
		this.organisationSpecialism = organisationSpecialism;
	}

	public List<ServiceDisabilitiesCapability> getServiceDisabilitiesCapability() {
		return serviceDisabilitiesCapability;
	}

	public void setServiceDisabilitiesCapability(
			List<ServiceDisabilitiesCapability> serviceDisabilitiesCapability) {
		this.serviceDisabilitiesCapability = serviceDisabilitiesCapability;
	}

	public List<ServiceBarriersCapability> getServiceBarriersCapability() {
		return serviceBarriersCapability;
	}

	public void setServiceBarriersCapability(
			List<ServiceBarriersCapability> serviceBarriersCapability) {
		this.serviceBarriersCapability = serviceBarriersCapability;
	}

	public List<ServiceBenefitsCapability> getServiceBenefitsCapability() {
		return serviceBenefitsCapability;
	}

	public void setServiceBenefitsCapability(
			List<ServiceBenefitsCapability> serviceBenefitsCapability) {
		this.serviceBenefitsCapability = serviceBenefitsCapability;
	}

	public List<ServicePersonalCircumstancesCapability> getServicePersonalCircumstancesCapability() {
		return servicePersonalCircumstancesCapability;
	}

	public void setServicePersonalCircumstancesCapability(
			List<ServicePersonalCircumstancesCapability> servicePersonalCircumstancesCapability) {
		this.servicePersonalCircumstancesCapability = servicePersonalCircumstancesCapability;
	}

	public List<ServiceEthnicityCapability> getServiceEthnicityCapability() {
		return serviceEthnicityCapability;
	}

	public void setServiceEthnicityCapability(
			List<ServiceEthnicityCapability> serviceEthnicityCapability) {
		this.serviceEthnicityCapability = serviceEthnicityCapability;
	}

	public List<Accreditation> getAccreditation() {
		return accreditation;
	}

	public void setAccreditation(List<Accreditation> accreditation) {
		this.accreditation = accreditation;
	}

	public boolean isActive() {
		return active;
	}

	public void setActive(boolean active) {
		this.active = active;
	}

	public List<Programme> getProgrammes() {
		return programmes;
	}

	public void setProgrammes(List<Programme> programmes) {
		this.programmes = programmes;
	}

	public List<Service> getServices() {
		return services;
	}

	public void setServices(List<Service> services) {
		this.services = services;
	}

}